Bound speckit.clarify planning deferral to implementation details - #4507
Bound speckit.clarify planning deferral to implementation details#4507gyanu2507 wants to merge 2 commits into
Conversation
The command treated "better deferred to planning" as a catch-all, so agents skipped NFRs, acceptance criteria, and edge cases. Spec hits must stay question candidates. Defer only implementation method, tech-stack comparison, or task breakdown. Fixes github#1717
|
Thanks @gyanu2507 — you've correctly identified a real bug, but I think this should be split, because most of it belongs in a preset rather than the core command. The genuine defect is narrow: the deferral step has an unbounded escape hatch — "Information is better deferred to planning phase" — that lets the agent defer the entire (already-present) spec taxonomy and skip its spec-stage job, which is the contradictory "defer all 24 / no ambiguities" behavior in #1717. The rest — the explicit stage-gate procedure, the >60% defer-ratio self-audit, and the MUST-NOT enforcement block — is prescriptive clarify methodology. That's an opinion about how aggressively to enforce and self-police the spec/plan line, and baking it into the core command imposes it on everyone. That's exactly the use case for a preset that On the test: |
The unbounded "better deferred to planning" catch-all is gone. Spec taxonomy still lives in the command. Stage-gate procedure and defer-ratio audit belong in an opt-in wrap preset, not core.
|
Agreed. I cut this back to the catch-all. Core now defers only implementation method, tech-stack comparison, or task breakdown. The stage-gate procedure, the >60% ratio audit, and the MUST-NOT block are out. The test asserts the unbounded phrase is gone, and that those three defer-only cases are named. I'll put the methodology in a wrap preset as a follow-up so teams can opt in. |
|
Wrap preset is #4515. Stage-gate procedure, 60% ratio, and MUST-NOT live there. |
|
Thanks @gyanu2507 — this is exactly the split I was hoping for: the core now just bounds the deferral to implementation/tech-stack/task-breakdown, and the stage-gate methodology lives in the opt-in #4515 preset. The bounded-invariant test is the right shape too. I'll trigger CI and take a look. (Drafted with AI assistance — GitHub Copilot.) |
There was a problem hiding this comment.
🟡 Changes recommended
The completion report retains the broad planning-deferral catch-all the PR intends to remove.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Bounds /speckit.clarify planning deferrals and adds regression coverage.
Changes:
- Restricts planning deferral to implementation-specific concerns.
- Adds a template-content regression test.
File summaries
| File | Description |
|---|---|
templates/commands/clarify.md |
Narrows the planning-deferral rule. |
tests/test_clarify_stage_gate.py |
Tests required and prohibited wording. |
Review details
- Files reviewed: 2/2 changed files
- Comments generated: 1
- Review effort level: Balanced
💡 Configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| For each category with Partial or Missing status, add a candidate question opportunity unless: | ||
| - Clarification would not materially change implementation or validation strategy | ||
| - Information is better deferred to planning phase (note internally) | ||
| - The item is specifically about implementation method, tech-stack comparison, or task breakdown (note internally) |
Description
/speckit.clarifytreated "better deferred to planning" as a catch-all, so agents skipped NFRs, acceptance criteria, empty-state UX, and edge cases.The command now defers only implementation method, tech-stack comparison, or task breakdown. Spec taxonomy is unchanged. Stage-gate procedure and defer-ratio audit stay out of core (those belong in an opt-in wrap preset).
Testing
uv run pytest tests/test_clarify_stage_gate.py